package com.gem.day02;

/**
 * 本类用来演示byte数据类型
 * 
 * byte(字节型),是8种Java基本数据类型之一
 * 
 * 1byte = 1字节 = 8位
 * 1int = 4字节 = 32位
 * 
 * @author easonsy
 * 2020年7月17日 上午8:33:47
 */
public class ByteDemo {
	public static void main(String[] args) {

		//存储形式: 00000001
		//byte b = 1;

		//存储形式: 01111111
		//byte b = 127;

		//byte b1 = 5;
		//byte b2 = 10;

		/*
		 * 01111111			byte的127
		 * 10000000			byte的-128
		 */
		byte b = 127;
		b += 1;
		System.out.println(b);

		/*
		 * byte的赋值要求:
		 * 1.赋值符号右侧的值必须在byte范围之内
		 * 2.必须是字面量直接赋值,不能通过表达式计算!
		 *    (原因:byte + byte = int)
		 */
		//byte bb = b1 + b2;//编译错误

		//存储形式:00000000 00000000 00000000 00000001
		//int i = 1;

		//存储形式:00000000 00000000 00000000 01111111
		int i = 127;

		System.out.println("-----------------------------------------");

		/*
		 * 1.二进制转换成十进制
		 * 标号:				76543210
		 * 二进制:			00000110
		 * 
		 * 计算: 1 * 2 ^ 2 + 1 * 2 ^ 1 = 6
		 * 
		 * 2.十进制转换成二进制
		 * 十进制:			9
		 * 
		 * 计算: 连续除以2,倒取余数
		 * 
		 * 			9
		 * 2		4		1
		 * 2		2		0
		 * 2		1		0
		 * 2		0		1
		 * 
		 * 1001
		 */

		//写代码得到计算结果
		//转换二进制,八进制,十六进制
		String r1 = Integer.toBinaryString(7);
		System.out.println(r1);

		String r2 = Integer.toOctalString(8);
		System.out.println(r2);

		//十六进制由0-9和a-f组成,以0x开头
		String r3 = Integer.toHexString(15);
		System.out.println(r3);

		//把任何进制字符串转换成十进制
		System.out.println(Integer.parseInt("f", 16));
	}
}
